hhkb
모의해킹

리눅스명령어_08_터미널 멀티플렉서(TMUX)

작성자 : Heehyeon Yoo|2025-11-15
# Linux# CLI# TMUX# 도구

1. 개요(Overview)

티먹스(TMUX)란?

  • 정의: 터미널 멀티플렉서(Terminal Multiplexer)의 약자로, 하나의 터미널 창 안에서 여러 개의 가상 터미널을 생성하고 관리할 수 있게 해주는 도구이다.
  • 비유: 웹 브라우저의 '탭(Tab)' 기능과 유사하다. 하나의 브라우저 창에서 여러 탭을 열어 동시에 여러 사이트를 보듯, Tmux는 하나의 터미널에서 여러 작업을 동시에 수행할 수 있게 해준다.

왜 사용하는가?

  1. 세션 유지(Persistence): 원격 서버 접속이 끊겨도(로그아웃), Tmux 세션 안에서 실행 중인 프로세스는 종료되지 않고 백그라운드에서 계속 돌아간다. 다시 접속(Attach)하면 작업하던 화면 그대로 복구된다.
  2. 화면 분할(Pane Splitting): 화면을 가로/세로로 자유롭게 쪼개서, 한쪽은 서버 실행, 한쪽은 코드 수정, 다른 한쪽은 로그 확인 등 멀티태스킹이 가능하다.
  3. 헤드리스 환경 대응(Headless Environment): 모니터가 없는 서버 환경(CLI Only)에서 GUI 없이도 다중 작업을 효율적으로 수행할 수 있다.
  4. 협업(Collaboration): 하나의 세션에 여러 사용자가 동시에 접속하여 같은 화면을 공유할 수 있다.

2. 기본 구성 요소(Components)

Tmux는 3가지 계층 구조로 이루어져 있다.

  1. 세션(Session): Tmux의 가장 큰 실행 단위. 하나 이상의 윈도우를 포함한다.
  2. 윈도우(Window): 세션 내의 탭(Tab) 개념. 하나의 화면 전체를 의미한다.
  3. 페인(Pane): 윈도우 내부를 쪼갠 작은 칸. 실제 터미널 작업이 이루어지는 공간이다.

3. 핵심 단축키(Key Bindings)

Tmux의 모든 명령은 프리픽스 키(Prefix Key)를 먼저 누른 후 실행된다.

  • 기본 프리픽스 키: Ctrl + b

세션 관리(Session Management)

  • 새 세션 생성: tmux new -s [세션이름]
    • 예: tmux new -s work
  • 세션 목록 확인: tmux ls
  • 세션 접속(Attach): tmux attach -t [세션이름]
    • 예: tmux attach -t work
  • 세션 분리(Detach): Prefix + d (작업 내용을 유지한 채 밖으로 나감)

윈도우 관리(Window Management)

  • 새 윈도우 생성: Prefix + c (Create)
  • 윈도우 이름 변경: Prefix + , (Rename)
  • 윈도우 이동:
    • Prefix + n : 다음(Next) 윈도우로 이동
    • Prefix + p : 이전(Previous) 윈도우로 이동
    • Prefix + [숫자] : 해당 번호의 윈도우로 바로 이동

페인 관리(Pane Management)

  • 화면 수직 분할(좌/우): Prefix + % (Shift + 5)
  • 화면 수평 분할(위/아래): Prefix + " (Shift + ')
  • 페인 간 이동: Prefix + 방향키
  • 페인 줌(Zoom In/Out): Prefix + z (현재 페인을 전체 화면으로 확대/복구)
  • 페인 닫기: exit 명령어나 Ctrl + d

스크롤 모드(Scroll Mode)

  • 진입: Prefix + [
  • 이동: PageUp/PageDown 또는 방향키로 지난 기록 확인.
  • 종료: q (Quit)

4. 실무 활용 팁(Practical Use Cases)

작업 환경 분할 예시

하나의 윈도우를 다음과 같이 분할하여 업무 효율을 높인다.

  • Pane 1(좌측): 서버/서비스 실행 및 모니터링
  • Pane 2(우측 상단): 코드 편집 (Vim 등)
  • Pane 3(우측 하단): Git 명령어 실행 또는 파일 탐색

로깅과 보존(Logging & History)

  • Tmux는 세션 내의 모든 활성 시간과 명령어 기록을 유지하는 데 탁월하다.
  • 사고 분석이나 감사(Audit) 시, 특정 세션에서 언제 어떤 명령어가 실행되었는지 추적하기 용이하다.